home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Sprite 1984 - 1993
/
Sprite 1984 - 1993.iso
/
src
/
lib
/
c
/
hash
/
Hash.man
< prev
next >
Wrap
Text File
|
1988-12-30
|
2KB
|
50 lines
' $Header: /sprite/src/lib/c/hash/RCS/Hash.man,v 1.1 88/12/30 15:05:14 ouster Exp $ SPRITE (Berkeley)
.so \*(]ltmac.sprite
.HS Hash lib
.BS
.SH NAME
Hash \- overview of routines to manipulate hash tables
.BE
.PP
The Hash_ routines provide mechanisms for manipulating hash
tables. A hash table is a data structure that stores any
number of entries, each of which is a <key, value> pair.
Given the key for a particular entry, the
Hash_ routines can very quickly find the entry (and hence the
associated value). There can be at most one entry with a given
key in a hash table at a time, but many entries may have the
same value.
.PP
This library provides two unusual features. First, hash tables
can grow gracefully. In most hash table implementations
the number of buckets in the table is fixed; if the number of
entries in the table becomes substantially larger than the number
of buckets, the performance of the table degrades. In contrast,
this implementation automatically re-allocates the bucket memory
as the table grows. As a result, hash tables can become arbitrarily
large without overloading the buckets. An initial number of buckets
may be provided when tables are initialized, but it will change later
(automatically) if necessary to guarantee efficient operation.
.PP
The second unusual feature of the Hash_ routines is that they allow
keys to be expressed in several forms. Keys may either be variable-length
NULL-terminated strings, or single-word values, or multi-word records
of any length (in the latter case, all keys in the table must be the
same length). See Hash_InitTable for deatils on the different key types.
.PP
Hash tables are initialized by calling \fBHash_InitTable\fR. New entries
are added with \fBHash_CreateEntry\fR, and existing entries may be located
with either \fBHash_CreateEntry\fR or \fBHash_FindEntry\fR. The values stored
in entries are manipulated with \fBHash_GetValue\fR and Hash_SetValue
(values may be arbitrary one-word values; they are stored in entries
and retrieved from them using the type ``ClientData''). An entry
can be deleted from the table by calling \fBHash_DeleteEntry\fR; the entire
table can be released by calling \fBHash_DeleteTable\fR. \fBHash_EnumFirst\fR
and \fBHash_EnumNext\fR provide a facility for stepping through all the
entries in a table. Finally, \fBHash_PrintStats\fR can be invoked to print
out some usage information about a hash table.
.SH KEYWORDS
hash table, key, value